Failures can occur in integrated circuit memory storage devices which affect their ability to store data reliably. The failures frequently occur in the memory cells of the memory storage devices and can result from many causes. These causes include manufacturing imperfections, operating conditions such as voltage supply degradation, and environmental conditions such as temperature variation outside a specified range. The failures can also result from a variety of well known failure mechanisms such as oxide time dependent dielectric breakdown or metal electromigration. The failures can be classified as either systematic failures or random failures. Systematic failures consistently affect a particular memory storage cell, or a particular group of memory storage cells. Random failures occur transiently and are not consistently repeatable.
Systematic and random failures or faults are undesirable in memory storage devices because the memory storage cells cannot be written to or read from reliably. A memory cell affected by a fault can become unreadable, resulting in an inability to read a logic value from the memory cell. A memory cell affected by a fault can also become unreliable so that the logic value stored in the cell is not necessarily the logic value read. Once a memory cell having a fault is identified, information about the memory cell can be retained or cataloged so that the memory cell is no longer used.
One approach used to catalog memory cells having faults is to store addresses of the affected cells so that data can no longer be written to or read from the cells. Storing information about the affected memory cells, however, can be inefficient due to the potentially large number of affected cells. A single physical failure, such as a shorted bit failure, can affect a large number of memory cells which lie in the same row or column.
Another approach used to catalog memory cells having faults is to count the number of faults which are detected. With this approach, if a later count of the number of faults in the memory storage device matches an earlier count of the number of faults, the previously valid data units are assumed to still be valid, and data can be stored in those data units while skipping the data units containing errors.
One problem of using counts is that if the location of a fault were to change, this would go undetected because the total number of counts would remain unchanged. To reduce the potential of this occurring, separate counts can be maintained for each data unit, such as for each sector or byte. However, even with this approach, if the location of a fault were to change in the sector or byte, this would still go undetected because the total number of faults in the sector or byte would remain unchanged.